<template>
  <div class="leaderboard">
    <!-- 排行榜 -->
    <table class="leaderboard-table">
      <thead>
        <tr>
          <th>名次</th>
          <th>用户</th>
          <th>昵称</th>
          <th>提交</th>
          <th>解决</th>
          <th>比率</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(user, index) in leaderboard" :key="user.userName">
          <td>{{ index + 1 }}</td>
          <td>{{ user.username }}</td>
          <td>{{ user.name }}</td>
          <td>{{ user.submissions }}</td>
          <td>{{ user.solved }}</td>
          <td>
            {{
              user.submissions === 0
                ? "0%"
                : ((user.solved * 100.0) / user.submissions).toFixed(2) + "%"
            }}
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
import request from "@/utils/request"; // 引入请求工具

export default {
  data() {
    return {
      leaderboard: [], // 用于存储排行榜数据
    };
  },
  mounted() {
    // 请求排行榜数据
    request
      .get("/user/selectAll") // 假设后端有一个接口返回排行榜数据
      .then((res) => {
        if (res.code === "200") {
          // 处理返回的数据，计算比率并按规则排序
          const data = res.data;

          // 给每个用户添加一个比率字段
          data.forEach((user) => {
            if (user.submissions === 0) {
              user.rate = 0; // 如果提交为0，设置比率为0
            } else {
              user.rate = (user.solved * 100.0) / user.submissions; // 计算通过率
            }
          });

          // 先按解决的题目数降序排序，再按提交的次数升序排序
          this.leaderboard = data.sort((a, b) => {
            if (b.solved === a.solved) {
              return a.submissions - b.submissions; // 如果解决题目数相同，按提交次数升序排序
            }
            return b.solved - a.solved; // 按解决题目数降序排序
          });
        }
      })
      .catch((error) => {
        console.error("Error fetching leaderboard:");
      });
  },
};
</script>

<style scoped>
/* 外层容器 */
.leaderboard {
  padding: 20px;
  background-color: #f4f6f9;
  border-radius: 8px;
}

/* 表格样式 */
.leaderboard-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
  background-color: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

.leaderboard-table th,
.leaderboard-table td {
  padding: 12px 16px;
  text-align: center;
  font-size: 14px;
}

.leaderboard-table th {
  background-color: #f0f2f5;
  color: #333;
  font-weight: 500;
}

.leaderboard-table td {
  border-bottom: 1px solid #f0f2f5;
}

.leaderboard-table tr:hover {
  background-color: #fafafa;
}

/* 状态标签样式 */
.el-tag {
  font-size: 12px;
  padding: 4px 8px;
}
</style>
